package com.itheima.task;

import io.jsonwebtoken.Claims;
import io.jsonwebtoken.Jwt;
import io.jsonwebtoken.Jwts;
import io.jsonwebtoken.SignatureAlgorithm;
import org.junit.Test;

import java.util.Date;
import java.util.UUID;

/**
 * @author zhangyan
 * @date 2021/3/30 22:36
 */
public class JwtDemo {

    /**
     * 生成JWT
     */
    @Test
    public void test(){

        String jwt = Jwts.builder()
                .setId(UUID.randomUUID().toString()) // id 唯一标识

                .setSubject("itcast") // sub 主题

                .claim("name", "itheima") // 第二部分:自定义信息 载荷(json)
                .claim("age", 18)
                .claim("role", "admin")

                .setIssuedAt(new Date()) // 签发日期
                .setExpiration(new Date()) // 过期时间
                .signWith(SignatureAlgorithm.HS256, "nineclock") // 签名(加密算法,密钥)

                .compact(); //构建令牌

        System.out.println(jwt);

    }

    /**
     * 校验jwt
     */
    @Test
    public void verify(){

        String key = "eyJhbGciOiJIUzI1NiJ9.eyJqdGkiOiJkNzQwMWEyMy1iNWJlLTQ4NzMtOTE0Mi1iMTg5NmZlMTZmMTIiLCJzdWIiOiJpdGNhc3QiLCJuYW1lIjoiaXRoZWltYSIsImFnZSI6MTgsInJvbGUiOiJhZG1pbiIsImlhdCI6MTYxNzExNTgzMywiZXhwIjoxNjE3MTE1ODMzfQ.Wb2FRK00-keLifuuYDb0wKEOgA-qWBE7jg-w3Br7zAo";

        Claims claims = Jwts.parser().setSigningKey("nineclock").parseClaimsJws(key).getBody();

        System.out.println(claims);
    }
}
